package com.night.icm.service.base.service;

import com.night.icm.common.utils.PageDataDTO;
import com.night.icm.common.utils.SimpleDataDTO;
import com.night.icm.model.base.ConfigurationInfoDTO;

import java.util.List;

/**
 * ConfigurationInfoService
 *
 * @author Liao ZhiYong
 * @date 2020/1/24
 */
public interface ConfigurationInfoService {

    /**
     * 分页查询全局参数配置信息
     *
     * @param page      页号，从0开始
     * @param size      每页记录条数
     * @param sort      排序字段，例如：字段1,asc,字段2,desc
     * @param name      名称
     * @param available 是否可用
     * @return 全局参数配置信息
     */
    PageDataDTO<ConfigurationInfoDTO> findOnePage(int page, int size, String sort, String name, Boolean available);

    /**
     * 通过id查询全局参数配置信息
     *
     * @param id 全局参数配置Id
     * @return 全局参数配置信息
     */
    ConfigurationInfoDTO findById(String id);

    /**
     * 查找所有全局参数配置信息
     *
     * @return 全局参数配置信息
     */
    List<ConfigurationInfoDTO> findAll();

    /**
     * 添加全局参数配置信息
     *
     * @param configurationInfoDTO 全局参数配置信息
     * @return 全局参数配置信息
     */
    ConfigurationInfoDTO create(ConfigurationInfoDTO configurationInfoDTO);

    /**
     * 根据id删除全局参数配置
     *
     * @param id 全局参数配置Id
     */
    void delete(String id);

    /**
     * 更新全局参数配置信息
     *
     * @param id                   全局参数配置id
     * @param configurationInfoDTO 全局参数配置信息
     * @return 更新全局参数配置信息
     */
    ConfigurationInfoDTO update(String id, ConfigurationInfoDTO configurationInfoDTO);

    /**
     * 检查配置名称唯一性
     *
     * @param name 配置名称
     * @return 检查配置名称唯一性
     */
    SimpleDataDTO<Boolean> checkConfigurationName(String name);
}
